package spese.gestore.androidiani;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Scanner;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

/**
 * La classe Presa_dati si occupa di gestire un'interfaccia nella quale viene richiesto all'utente di inserire i propri dati personali
 * @author Fusinato Lorenzo - Androidiani
 *
 */
public class Presa_dati extends Activity {
	
	//Istanzio i vari editText di cui andrò a servirmi più tardi
	EditText eT_name;
	EditText eT_surname;
	EditText eT_email;
	EditText eT_num_matr;
	
    protected void onCreate (Bundle b){
		super.onCreate(b);
		
		//Setto il layout principale della pagina
		setContentView(R.layout.layout_presa_dati);

		//Associo ad ogni editText la propria id della pagina di layout
		eT_name = (EditText) findViewById(R.id.eT_name);
		
		eT_surname = (EditText) findViewById(R.id.eT_surname);
		
		eT_email = (EditText) findViewById(R.id.eT_email);
		
		eT_num_matr = (EditText) findViewById(R.id.eT_num_matr);
		
	    final Button button_do = (Button) findViewById(R.id.do_req_info);
    
	    //Chiamo il metodo file_to_text che serve a popolare le editText nel caso in cui l'utente abbia già messo i suoi dati
	    //in precedenza
	    try {file_to_text();} 
	    catch (IOException e1) {e1.printStackTrace();} //Il catch fa uscire dal try quando non esiste il file dati utente
    
	    //Preparo i vari toast di allerta nel caso i campi editText siamo stati lasciati vuoti
	    final Toast toast_no_name=Toast.makeText(this,"Name's field is required",Toast.LENGTH_LONG);
	    
	    final Toast toast_no_place=Toast.makeText(this,"Surname's field is required",Toast.LENGTH_LONG);
	    
	    final Toast toast_no_sDate=Toast.makeText(this,"Email's field is required",Toast.LENGTH_LONG);
	    
	    final Toast toast_no_eDate=Toast.makeText(this,"Matricola's field is required",Toast.LENGTH_LONG);
	
	    //Preparo un avviso acustico
	    final MediaPlayer mpAlert = MediaPlayer.create(this, R.raw.alert);
	    
	    //Preparo un avviso tramite vibrazione
	    final Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
	    
	    //Preparo il listener del bottone
	    button_do.setOnClickListener(new View.OnClickListener(){
			public void onClick(View v){
				
				//Setto su delle variabili tramite il metodo toString le stringhe prese dai vari editText
				String new_user_name = eT_name.getText().toString();
				String new_user_surname = eT_surname.getText().toString();
				String new_user_email = eT_email.getText().toString();
				String new_user_matricola = eT_num_matr.getText().toString();
				
				//Ciclo if per controllare che i campi editText non siano vuoti
				if (new_user_name.length()==0) {toast_no_name.show();  //Mostra il toast
												mpAlert.start();  //Fa partire l'alert acustico
												vib.vibrate(300);  //Fa partire la vibrazione di 300ms
												return ;} //Il return fa uscire dall'if e quindi blocca il pulsante
	
				if (new_user_surname.length()==0) {toast_no_place.show();  //Mostra il toast
												   mpAlert.start();  //Fa partire l'alert acustico
												   vib.vibrate(300);  //Fa partire la vibrazione di 300ms
												   return ;} //Il return fa uscire dall'if e quindi blocca il pulsante
				
				if (new_user_email.length()==0) {toast_no_sDate.show();  //Mostra il toast
												 mpAlert.start();  //Fa partire l'alert acustico
												 vib.vibrate(300);  //Fa partire la vibrazione di 300ms
												 return ;} //Il return fa uscire dall'if e quindi blocca il pulsante
				
				if (new_user_matricola.length()==0) {toast_no_eDate.show();  //Mostra il toast
													 mpAlert.start();  //Fa partire l'alert acustico
													 vib.vibrate(300);  //Fa partire la vibrazione di 300ms
													 return ;} //Il return fa uscire dall'if e quindi blocca il pulsante
				
				try {final String TESTSTRING = new String(new_user_name + "\n" + new_user_surname + "\n" +  new_user_email + "\n" + new_user_matricola);
				   
				    FileOutputStream fOut = openFileOutput("dati_utente.txt",
				                                            MODE_WORLD_READABLE);
				    OutputStreamWriter osw = new OutputStreamWriter(fOut); 
	
				    // Scrive la stringa sul file
				    osw.write(TESTSTRING);
				    
				    //Ci assicuriamo che tutti i dati siano scritti sul file e poi lo chiudiamo
				    osw.flush();
				    osw.close();} 
				
				catch (IOException e) {
						e.printStackTrace();}
				
				finally{}
				
				Intent intent=new Intent (Presa_dati.this,Lista_Missioni.class);
				startActivity(intent);
				
				System.out.println("Button_do");
				
			}
		});
    
}
    
    /**
     * Questo metodo di occupa di riempire automaticamente i campi editText nel caso in cui l'utente abbia già inserito
     * almeno una volta i propri dati utente. Nel qual caso si ritroverebbe la pagina Presa _dati con i campi editText già riempiti dai dati immessi precedentemente
     * @return
     * @throws IOException
     */
    public boolean file_to_text() throws IOException{
    	
    	String one = null;
    	String two = null;
    	String three = null;
    	String four = null;
    	
    	try{FileReader reader = new FileReader(getFilesDir()+File.separator+"dati_utente.txt");
    		System.out.println("filereader");
    		
    	    Scanner scanner = new Scanner(reader);

    		one = scanner.nextLine();
    		System.out.println("preso one");
    		
    		two = scanner.nextLine();
    		System.out.println("preso two");
    		
    		three = scanner.nextLine();
    		System.out.println("preso three");
    		
    		four = scanner.nextLine();
    		System.out.println("preso four");
    		
        	reader.close();}
    	
    catch (FileNotFoundException fnfe) {
        System.out.print("il file dati utente è vuoto");
        return false;}
    	
    	eT_name.setText(one);
    	eT_surname.setText(two);
    	eT_email.setText(three);
    	eT_num_matr.setText(four);
    
    	return true;
    }
    
}

